

import va = module("main/org/sdmx/model/v2/base/VersionableArtefact");
import ma = module("main/org/sdmx/model/v2/structure/organisation/MaintenanceAgency");
	
/**
	* Provides the ability for derived classes to be maintained by a 
	* MaintenanceAgency. It is possible to define whether the artefact is draft 
	* or final.
	* 
	* @author Xavier Sosnovsky, Anthony Morel
	*/
export interface MaintainableArtefact extends va.VersionableArtefact
{
	/**
	    * Whether a maintained artefact is draft or final.
	    */
	geIsFinal():bool;
		
	/**
	    * @private
	    */
	setIsFinal(isFinal:bool);
		
	/**
	    * The organisation maintaining the artefact.
	    * 
	    * @throws ArgumentError <code>ArgumentError</code> If the maintenance
	    * agency is null
	    */
	getMaintainer():ma.MaintenanceAgency;
		
	/**
	    * @private
	    */
	setMaintainer(maintainer:ma.MaintenanceAgency);	
}